configuration TPSNAppC {
}

implementation {
	components MainC, TPSNC as App, LedsC;
	components new AMSenderC(6);
	components new AMReceiverC(6);
	components new TimerMilliC() as timer0;
	components new TimerMilliC() as timer1;
	components new TimerMilliC() as timer2;
	components new TimerMilliC() as timer3;
	components new TimerMilliC() as timer4;
	components ActiveMessageC as ActiveMessageC1;
	components ActiveMessageC as ActiveMessageC2;
	components LocalTimeMicroC as Micro;
	  
	components RandomC;
	components RandomMlcgC;
	  
	App.Boot -> MainC.Boot;
	  
	App.Random -> RandomC;  
	App.Seed -> RandomMlcgC.SeedInit;
	  
	App.Receive -> AMReceiverC;
	App.AMSend -> AMSenderC;
	App.AMControl -> ActiveMessageC1;
	App.Leds -> LedsC;
	App.MilliTimer -> timer0;
	App.StartTimer -> timer1;
	App.TimerLockLevel -> timer2;
	App.SyncWait -> timer3;
	App.MicroTimer -> Micro;
	App.SynchronizationTimer -> timer4;
	App.Packet -> AMSenderC;
	App.TimeStamp -> ActiveMessageC1;
	
	// External interrupt on INT4
	components HplAtm128InterruptC;
	App.HplAtm128Interrupt -> HplAtm128InterruptC.Int4;
}